shutdown: Bias towards processing remaining work #15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
shutdown::CancelOnShutdown
wraps aFuture
orStream
so that thetask completes when shutdown is signaled. Currently, this is done by
stopping all additional work on these tasks as soon as the shutdown
signal is observed. This makes it difficult to ensure that in-flight
work is processed during shutdown.
This change alters the behavior so that
CancelOnShutdown
polls theinner
Future
orStream
before polling the shutdown watch, so thatthe shutdown watch is only polled when the inner instance is pending.
This will, in-turn, block the shutdown and runtime futures from
completing until all pending work is processed.
In pathological cases, this could prevent the process from terminating
gracefully. It seems better to the user or kubelet abort the application
if it doesn't complete its work in a timely fashion.